অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) এবং Spring Boot এর মাধ্যমে মেসেজ প্রেরণ (Sender) এবং গ্রহণ (Listener) একটি জনপ্রিয় প্যাটার্ন যা অ্যাসিঙ্ক্রোনাস মেসেজিং সিস্টেম তৈরি করতে ব্যবহৃত হয়। Spring Boot এবং অ্যাপাচি অ্যাকটিভএমকিউ-এর সমন্বয়ে আপনি সহজেই প্রোডিউসার (Sender) এবং কনজিউমার (Listener) তৈরি করতে পারেন।
এখানে আমরা দেখব কিভাবে Spring Boot এর সাহায্যে Message Sender এবং Message Listener তৈরি করা যায় অ্যাপাচি অ্যাকটিভএমকিউ ব্যবহার করে।
প্রথমে, pom.xml ফাইলে অ্যাপাচি অ্যাকটিভএমকিউ এবং স্প্রিং অ্যামকিউ (Spring ActiveMQ) ডিপেনডেন্সি যুক্ত করতে হবে:
<dependencies>
<!-- Spring Boot Starter Web for creating REST API -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for working with message brokers like ActiveMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!-- Spring Boot Starter JMS for messaging -->
<dependency>
<groupId>org.springframework.jms</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<!-- Apache ActiveMQ dependency -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
এই ডিপেনডেন্সিগুলি আপনার প্রজেক্টে অ্যাপাচি অ্যাকটিভএমকিউ এবং স্প্রিং বুটের মধ্যে ইন্টিগ্রেশন সরবরাহ করবে।
এখন আমরা একটি Message Sender তৈরি করব যা অ্যাপাচি অ্যাকটিভএমকিউ ব্রোকারে মেসেজ পাঠাবে।
ActiveMQ Configuration:
অ্যাপাচি অ্যাকটিভএমকিউ কনফিগারেশন Spring Boot অ্যাপ্লিকেশনে করার জন্য, application.properties
ফাইলে কনফিগারেশন যুক্ত করতে হবে।
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.in-memory=false
spring.activemq.packages.trust-all=true
এখানে:
Message Sender (Producer) কনফিগারেশন:
মেসেজ প্রেরণের জন্য আমরা একটি JmsTemplate
ব্যবহার করব।
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
@Service
public class MessageSender {
@Autowired
private JmsTemplate jmsTemplate;
private String destination = "testQueue"; // Queue Name
// Method to send message to ActiveMQ
public void sendMessage(String message) {
jmsTemplate.convertAndSend(destination, message);
System.out.println("Sent message: " + message);
}
}
এখানে:
REST Controller for Sending Messages:
মেসেজ পাঠানোর জন্য একটি REST API তৈরি করতে পারেন:
package com.example.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MessageController {
@Autowired
private MessageSender messageSender;
// Endpoint to send message
@GetMapping("/send")
public String sendMessage(@RequestParam String message) {
messageSender.sendMessage(message);
return "Message sent: " + message;
}
}
এই কোডের মাধ্যমে, আপনি http://localhost:8080/send?message=HelloActiveMQ
URL এ GET রিকোয়েস্ট পাঠিয়ে মেসেজ পাঠাতে পারবেন।
এখন আমরা একটি Message Listener তৈরি করব যা কিউ থেকে মেসেজ গ্রহণ করবে।
Message Listener কনফিগারেশন:
Spring Boot এর মাধ্যমে @JmsListener ব্যবহার করে আপনি মেসেজ গ্রহণ করতে পারেন। প্রথমে, @EnableJms অ্যানোটেশনটি ব্যবহার করে JmsListener সক্রিয় করতে হবে।
package com.example.demo;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;
@Service
public class MessageListener {
// Listening to the 'testQueue' for incoming messages
@JmsListener(destination = "testQueue")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
এখানে:
testQueue
থেকে মেসেজ গ্রহণ করার জন্য কনজিউমার তৈরি করে। যখনই কিউতে একটি মেসেজ আসে, এই মেথডটি তা গ্রহণ করবে।JmsListenerContainerFactory কনফিগারেশন:
স্প্রিং বুটের মাধ্যমে JMS কনজিউমার এবং কনফিগারেশন পরিচালনা করার জন্য JmsListenerContainerFactory কনফিগার করা হয়:
package com.example.demo;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.connection.JmsConnectionFactoryFactory;
import org.springframework.jms.listener.DefaultMessageListenerContainer;
import org.springframework.jms.listener.MessageListenerContainer;
import org.springframework.jms.listener.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.listener.config.JmsListenerContainerFactory;
import org.springframework.jms.support.destination.DestinationResolver;
import org.springframework.jms.support.converter.MessageConverter;
@Configuration
@EnableJms
public class JmsConfig {
@Bean
public JmsListenerContainerFactory<?> myFactory(
ActiveMQConnectionFactory connectionFactory,
MessageConverter messageConverter,
DestinationResolver destinationResolver) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setMessageConverter(messageConverter);
factory.setDestinationResolver(destinationResolver);
return factory;
}
}
অ্যাপাচি অ্যাকটিভএমকিউ এবং Spring Boot ব্যবহার করে Message Sender (Producer) এবং Message Listener (Consumer) তৈরি করা একটি সাধারণ এবং কার্যকরী উপায় মেসেজিং সিস্টেম তৈরির জন্য। Spring Boot এর মাধ্যমে:
JmsTemplate
ব্যবহার করে মেসেজ পাঠানো হয়।@JmsListener
ব্যবহার করে মেসেজ গ্রহণ করা হয়।এইভাবে, আপনি স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করে অ্যাপাচি অ্যাকটিভএমকিউ মেসেজ ব্রোকারের মাধ্যমে মেসেজ প্রেরণ এবং গ্রহণ সহজেই পরিচালনা করতে পারেন।
common.read_more